Implement WeakSet object#2009
Conversation
Codecov Report
@@ Coverage Diff @@
## main #2009 +/- ##
==========================================
+ Coverage 45.89% 45.98% +0.09%
==========================================
Files 206 207 +1
Lines 17150 17213 +63
==========================================
+ Hits 7871 7916 +45
- Misses 9279 9297 +18
Continue to review full report at Codecov.
|
|
Hi @lupd, Thanks for the contribution! Objects that are added to a Because it is tricky (impossible?) to demonstrate this with let ref;
{
let obj = {};
ref = new WeakRef(obj);
// This will always be `{}`
ref.deref()
}
// `obj` is now out of scope.
// This means that the object that was assigned to `obj` is now only weakly referenced by `ref`.
// The gc can now collect the object.
// This may be `{}` if the object was not yet collected.
// But at some point it will be `undefined` because the weak reference has been collected.
ref.deref()If you want to try that code in I think this behavior is not possible with our current gc in boa. We are using rust-gc as our garbage collector and that crate does not implement weak gc references as far as I know. We definitely weed weak gc references in boa for |
|
I think this is blocked on having weak references in the garbage collector. |
True :) There seems to be a draft PR for this: Manishearth/rust-gc#148 |
|
It's a bit of a work in progress...on a couple fronts 😅 |
This Pull Request implements the
WeakSetobject.It changes the following:
WeakSetas a newObjectKind.WeakSet.WeakSetobject (constructor, properties, instance methods, etc.).WeakSetobject.With these changes, the entire test suite for
WeakSetpasses. As well, additional tests usingWeakSet(e.g. 14 tests in theSettest suite) also pass.